package eu.web.security.access;

import java.util.ArrayList;
import java.util.List;



class Access {
	String path;
	List<List<String>> privilege;

	Access(String path) {
		this.path = path;
		privilege = new ArrayList<List<String>>();
		privilege.add(new ArrayList<String>());
	}

	Access addPrivilege(String p, int g) {
		while (g >= privilege.size()) {
			privilege.add(new ArrayList<String>());
		}
		privilege.get(g).add(p);
		return this;
	}

	Access removePrivilege(String p) {
		privilege.remove(p);
		return this;
	}

	boolean validate(AccessIdentity id) {
		int j;
		for (int i = 0; i < privilege.size(); i++) {
			for (j = 0; j < privilege.get(i).size(); j++) {
				if("null".equals(privilege.get(i).get(j)))
					return true;
				if (!id.hasThisPower(privilege.get(i).get(j))) {
					break;
				}
			}
			if (j == privilege.get(i).size() && j > 0) {
				return true;
			}
		}
		return false;
	}
}
